package au.com.acpfg.misc.StringMatcher; import java.util.ArrayList; import java.util.List; import java.util.Map; import org.knime.core.data.DataCell; import org.knime.core.data.DataType; import org.knime.core.data.collection.CollectionCellFactory; import org.knime.core.data.def.StringCell; public class SearchStringReporter implements MatchReporter { private boolean m_want_frequency; public SearchStringReporter(String task) { m_want_frequency = task.startsWith("Pattern distribution"); } @Override public DataCell report(StringMatcherNodeModel m, String str) throws Exception { List<String> patterns = m.getMatchingPatterns(); Map<String,Integer> freq = m.getMatchPatternFrequency(); if (patterns == null || patterns.size() < 1) return DataType.getMissingCell(); ArrayList<StringCell> vec = new ArrayList<StringCell>(); for (String p : patterns) { if (m_want_frequency) vec.add(new StringCell(p+"="+freq.get(p).intValue())); else vec.add(new StringCell(p)); } return CollectionCellFactory.createSetCell(vec); } }